Anaconda 发布 PyScript:在网页中嵌入 Python 代码
导读:PyScript 是一种在嵌入 HTML,在浏览器中运行 Python 的方法,上周末在美国盐湖城的 PyCon 会议中进行了预览展示。
五一前夕,数据科学与分析公司 Anaconda 的首席执行官 Peter Wang 发表了主题演讲,展示了他们刚刚发布的项目,它的名字叫做:“PyScript”。
Nvidia 的机器学习工程师 Bojan Tunguz指出:“这是我们 Python 社区中的许多人长期以来一直希望干的事情。”
前几天该项目网站中还有一个“Install”按钮,如果不是为了占位置,也可能是一个玩笑,因为PyScript并不需要安装。后来Anaconda 以讯雷不及掩耳盗铃之势调整成了“Contribute”(贡献)。
PyScript 依赖于目前的Pyodide项目,后者是 CPython(Python 的参考实现)到 WebAssembly 的一个端口。Pyodide 0.20.0 是在上个月发布,它支持 Python 3.10。
PyScript不是第一个可以在浏览器中运行 Python的工具,但 PyScript 宣称使这一切变得更容易、更自然。
开发者只要在HTML中链接 PyScript css 和相关 JavaScript 库文件,开用 <py-script> 标记嵌入 Python 代码,并提供一个 <py-repl>(读取、评估、打印、循环)组件,使 Python 能够被调入并动态执行。
以下是 PyScript 的一个示例代码,供赏析:
<!DOCTYPE html>
<html>
<head>
<title>Example</title>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>
<body>
<div id="msg">Loading page ...</div>
<br>
<py-script>
import js
from js import document
from pyodide.http import pyfetch
import asyncio
async def load_code_from_url(url):
try:
msg = document.getElementById("msg")
response = await pyfetch(url)
content = (await response.bytes()).decode('utf-8')
if response.status == 200:
msg.innerHTML = 'Python loaded'
return content
else:
msg = document.getElementById("msg")
msg.innerHTML = response.status
return False
except Exception as e:
msg = document.getElementById("msg")
msg.innerHTML = str(e)
return False
url = 'example_2.py'
mycode = await load_code_from_url(url)
exec(mycode)
</py-script>
</body>
</html>
PyScript 项目治理包括“让 99% 人会编程”的使命宣言,还有一个实体——PyScript指导委员会。该项目目前已经吸纳了3名成员,他们目前都是为 Anaconda 工作的专家。
PyScript 是使用 Apache 2.0 许可证的开源软件。
根据PyScript项目网站描述,目标包括在浏览器中启用 Python 而无需服务器端配置、运行流行的 Python 包、JavaScript 和 Python 之间的双向通信,以及使用“现成可用的精选 UI 组件(如按钮、容器、文本框等等)。”
当具有了这些灵活性,PyScript 相信浏览器将是一个很棒的平台,能够为 PyScript 用户提供可靠、可访问和有趣的用户体验和目标。因为浏览器适用于任何地方(从笔记本电脑、平板电脑到手机),并且安全、强大且稳定。
它是实现 PyScript 目标的完美起点:
提供干净简单的 API
支持标准 HTML
扩展 HTML 支持读取可靠的自定义组件
提供可插拔、可扩展的插件系统
目前在很多方面,Python 已经是最流行的编程语言。去年 IEEE Spectrum宣布它是“事实上的新技术平台”,在 RedMonk 的语言排名中仅次于 JavaScript。
Python在机器学习、统计分析方面处于领先地位,并且也是一种不断进步的编程语言。
让浏览器更易于使用不仅会让开发数据分析应用程序的科学家们感到高兴,也会让正在寻找 JavaScript 替代方案的程序员们感到兴奋。
PyScript项目开发人员警告说它还是“一个非常实验性的项目”,目前仍在alpha测试阶段,目前它只能在Chrome 浏览器上测试使用,感兴趣开发者们可以从pyscript.net下载先尝尝鲜。
作者:helloworld
相关阅读: